package Spring5.第二章.demo2_3_单例模式;

import java.lang.reflect.Constructor;

/**
 * 反射破坏单例
 */
public class DestoryLazyInnerSingleton {
    public static void main(String[] args) {
        try {
            // 破坏单例模式
            Class<?> clazz = LazyInnerClassSingleton.class;
            // 通过反射获取私有构造方法
            Constructor c = clazz.getDeclaredConstructor(null);
            // 强制访问
            c.setAccessible(true);
            // 暴力初始化
            Object o1 = c.newInstance();
            // 调用两次构造方法，相当于new两次，犯了原则性错误
            Object o2 = c.newInstance();

            System.out.println(o1 == o2);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
